package com.ruoyi.arrangement.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 约会安排对象 tb_date_arrangement
 * 
 * @author ruoyi
 * @date 2025-08-01
 */
public class TbDateArrangement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 安排ID */
    private Long arrangementId;

    /** 牵线申请ID */
    @Excel(name = "牵线申请ID")
    private Long requestId;

    /** 红娘ID */
    @Excel(name = "红娘ID")
    private Long matchmakerId;

    /** 用户A的ID */
    @Excel(name = "用户A的ID")
    private Long userId;

    /** 用户B的ID */
    @Excel(name = "用户B的ID")
    private Long targetUserId;

    /** 约会时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "约会时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date dateTime;

    /** 约会地点 */
    @Excel(name = "约会地点")
    private String dateLocation;

    /** 约会类型：1-咖啡厅，2-餐厅，3-电影院，4-其他 */
    @Excel(name = "约会类型：1-咖啡厅，2-餐厅，3-电影院，4-其他")
    private Integer dateType;

    /** 约会计划详情 */
    @Excel(name = "约会计划详情")
    private String datePlan;

    /** 用户A确认状态：0-待确认，1-已确认，2-已拒绝 */
    @Excel(name = "用户A确认状态：0-待确认，1-已确认，2-已拒绝")
    private Integer userAConfirm;

    /** 用户B确认状态：0-待确认，1-已确认，2-已拒绝 */
    @Excel(name = "用户B确认状态：0-待确认，1-已确认，2-已拒绝")
    private Integer userBConfirm;

    /** 安排状态：0-待确认，1-已确认，2-已取消，3-已完成 */
    @Excel(name = "安排状态：0-待确认，1-已确认，2-已取消，3-已完成")
    private Integer arrangementStatus;

    /** 取消原因 */
    @Excel(name = "取消原因")
    private String cancelReason;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    public void setArrangementId(Long arrangementId) 
    {
        this.arrangementId = arrangementId;
    }

    public Long getArrangementId() 
    {
        return arrangementId;
    }

    public void setRequestId(Long requestId) 
    {
        this.requestId = requestId;
    }

    public Long getRequestId() 
    {
        return requestId;
    }

    public void setMatchmakerId(Long matchmakerId) 
    {
        this.matchmakerId = matchmakerId;
    }

    public Long getMatchmakerId() 
    {
        return matchmakerId;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setTargetUserId(Long targetUserId) 
    {
        this.targetUserId = targetUserId;
    }

    public Long getTargetUserId() 
    {
        return targetUserId;
    }

    public void setDateTime(Date dateTime) 
    {
        this.dateTime = dateTime;
    }

    public Date getDateTime() 
    {
        return dateTime;
    }

    public void setDateLocation(String dateLocation) 
    {
        this.dateLocation = dateLocation;
    }

    public String getDateLocation() 
    {
        return dateLocation;
    }

    public void setDateType(Integer dateType) 
    {
        this.dateType = dateType;
    }

    public Integer getDateType() 
    {
        return dateType;
    }

    public void setDatePlan(String datePlan) 
    {
        this.datePlan = datePlan;
    }

    public String getDatePlan() 
    {
        return datePlan;
    }

    public void setUserAConfirm(Integer userAConfirm) 
    {
        this.userAConfirm = userAConfirm;
    }

    public Integer getUserAConfirm() 
    {
        return userAConfirm;
    }

    public void setUserBConfirm(Integer userBConfirm) 
    {
        this.userBConfirm = userBConfirm;
    }

    public Integer getUserBConfirm() 
    {
        return userBConfirm;
    }

    public void setArrangementStatus(Integer arrangementStatus) 
    {
        this.arrangementStatus = arrangementStatus;
    }

    public Integer getArrangementStatus() 
    {
        return arrangementStatus;
    }

    public void setCancelReason(String cancelReason) 
    {
        this.cancelReason = cancelReason;
    }

    public String getCancelReason() 
    {
        return cancelReason;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("arrangementId", getArrangementId())
            .append("requestId", getRequestId())
            .append("matchmakerId", getMatchmakerId())
            .append("userId", getUserId())
            .append("targetUserId", getTargetUserId())
            .append("dateTime", getDateTime())
            .append("dateLocation", getDateLocation())
            .append("dateType", getDateType())
            .append("datePlan", getDatePlan())
            .append("userAConfirm", getUserAConfirm())
            .append("userBConfirm", getUserBConfirm())
            .append("arrangementStatus", getArrangementStatus())
            .append("cancelReason", getCancelReason())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
